package lambda01;

import org.junit.Test;
/**
 * 利用匿名内部类创建一个线程,并且使用到Runnable接口
 * 匿名内部类:
 *   new 父类/父接口 (){
 *     //重写父类或父接口的方法
 *   };
 *  1.底层回创建一个该父类或父接口的子类(实现类)
 *  2.创建这个子类或实现类的对象
 *
 * 面向对象的思想: 关注如何创建一个类对象,通过这个类的对象去调用该类中的成员
 * 面向函数式编程思想(函数式编程): 关注函数的使用或者说关注最终实现的目标(焦点就在核心实现),进一步简化代码
 *                            Lambda表达式实现了面向函数式编程思想
 *
 */
public class LambdaDemo01 {
    @Test
    public void test01(){
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + "...Hello Thread");
            }
        };
        new Thread(r).start();
    }

    @Test
    public void test02(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName() + "...Hello Thread");
            }
        }).start();
    }

    @Test
    public void test03() {
        new Thread(()->{System.out.println(Thread.currentThread().getName() + "...Hello Thread");}).start();
    }
}
